/*
 * File:   FEMCalc.h
 *
 *      Author: Jerome RD Soine and Christoph A Brand
 *      Institution: Schwarz goup, Institute for Theoretical Physics, Heidelberg University, Germany
 */

#ifndef FEMCALC_H
#define	FEMCALC_H

#include "FEMCalcBase.h"
#include "../../../core/ForceTransmission.h"

using namespace dealii;

class FEMCalc : public FEMCalcBase
{
  public:
      FEMCalc(double YOUNGS_MOD, double POISSON_RATIO, Point<3> P1, Point<3> P2, unsigned int n_refs, vector<ForceTransmission*> FORCE_TRANS);
      ~FEMCalc();
    
      SubstrateModel * clone() const;

//      void run();
      void run(vector<ForceTransmission*> force_transmission);
  protected:
      void setup_system();
      void assemble_system();
      void assemble_rhs();
      void assemble_rhs(vector<ForceTransmission*> force_trans);
      void apply_boundary_conditions();
      void solve();
      
      double youngs_modulus, poisson_ratio;
      Point<3> p1;
      Point<3> p2;
      unsigned int n_refs;
//      vector<ForceTransmission*> force_transmissions;
  
};

#endif
